Storage devices enable users to store and retrieve data. For example, some storage devices include non-volatile memory devices used to store data. These storage devices often also include a controller that performs operations such as coordinating access to the non-volatile memory and error detection/correction. For example, the controller may include an error correction code (ECC) engine. The ECC engine may encode the data by generating a codeword including the data and parity data. The controller may store the codeword in the non-volatile memory. The controller may perform a memory operation based on the data. During the memory operation, the controller may receive a representation of the codeword from the non-volatile memory. The representation of the codeword may differ from the codeword due to one or more bit errors. After receiving the representation of the codeword, the controller may perform multiple decoding operations, such as multiple iterations of an iterative decoding process, on the representation of the codeword until all errors in the representation of the codeword have been corrected. Performing multiple decoding operations may add latency to performance of the memory operation.